(function(angular) {
    'use strict';

    angular.module('xianwan')
        .factory('VerifyUtil', ['$rootScope', 
            function($rootScope) {
                var reg = {
                    email: /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i, 
                    mobilePhone: /^1[3|4|5|7|8]\d{9}$/,
                    telPhone: /^\d?(\d-?){2,18}\d$/,
                    semver: /^(\d{1,3}.){2}\d{1,3}$/, 
                };
                return {
                    isEmail: function(input) {
                        return reg.email.test(input);
                    }, 

                    isMobilePhone: function(input) {
                        return reg.mobilePhone.test(input);
                    },

                    isTelPhone: function (input) {
                        return reg.telPhone.test(input);
                    },

                    /**
                     * 语义化版本校验：x.y.z 并且 x,y,z 均为 1-3 位数字
                     */
                    isSemver: function (input) {
                        return reg.semver.test(input);
                    }
                }
            }
        ])
})(angular);